// 基于template/src/widgets/\{{appEntities}}/\{{ctrls@CALENDAR}}-calendar/\{{spinalCase ctrl.codeName}}-calendar-model.ts.hbs生成
{{#* inline 'initCalendarItems' calendarItems}}
[
  {{#each calendarItems as |calendarItem|}}
      {
        // 项标识
        itemType: '{{calendarItem.itemType}}',
        {{#if calendarItem.psDEContextMenu}}
        // 上下文菜单
        contextMenus: [
            {{> @macro/widgets/calendar-detail/calendar-item-context-menu.hbs toolbarItems=calendarItem.psDEContextMenu.psDEToolbarItems contextMenu=calendarItem.psDEContextMenu node=calendarItem}}
        ],
        {{/if}}
        {{#if calendarItem.psAppDataEntity}}
        // 项实体相关参数
        entityCodeName: '{{calendarItem.psAppDataEntity.codeName}}',
        entityLogicName: '{{calendarItem.psAppDataEntity.logicName}}',
        entityKeyName: '{{calendarItem.psAppDataEntity.keyPSAppDEField.codeName}}',     
        {{/if}}
        // 默认背景颜色
        bKColor: '{{calendarItem.bKColor}}',   
        // 名称
        name: '{{calendarItem.name}}', 
        //  默认文本颜色          
        color: '{{calendarItem.color}}',
        // 实体数据集对象
        dataSet: {
          codeName : '{{calendarItem.psAppDEDataSet.codeName}}',
        },
        {{#if calendarItem.idPSAppDEField}}
        // 项标识值应用实体属性
        idField: { codeName: '{{lowerCase calendarItem.idPSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.psAppDataEntity}}
        // 实体
        entity: { keyName: '{{calendarItem.psAppDataEntity.keyPSAppDEField.codeName}}', codeName: '{{lowerCase calendarItem.psAppDataEntity.codeName}}' },
        {{/if}}
        {{#if calendarItem.textPSAppDEField}}
        // 文本应用实体属性
        textField: { name: '{{lowerCase calendarItem.textPSAppDEField.name}}', codeName: '{{lowerCase calendarItem.textPSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.beginTimePSAppDEField}}
        // 开始时间应用实体属性
        beginField: { name: '{{lowerCase calendarItem.beginTimePSAppDEField.name}}', codeName: '{{lowerCase calendarItem.beginTimePSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.endTimePSAppDEField}}
        // 结束时间应用实体属性
        endField: { name: '{{lowerCase calendarItem.endTimePSAppDEField.name}}', codeName: '{{lowerCase calendarItem.endTimePSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.bKColorPSAppDEField}}
        // 背景颜色应用实体属性
        bKColorField: { name: '{{lowerCase calendarItem.bKColorPSAppDEField.name}}', codeName: '{{lowerCase calendarItem.bKColorPSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.colorPSAppDEField}}
        // 文本颜色应用实体属性
        colorField: { name: '{{lowerCase calendarItem.colorPSAppDEField.name}}', codeName: '{{lowerCase calendarItem.colorPSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.contentPSAppDEField}}
        // 消息内容应用实体属性对象
        contentField: { name: '{{lowerCase calendarItem.contentPSAppDEField.name}}', codeName: '{{lowerCase calendarItem.contentPSAppDEField.codeName}}' },
        {{/if}}
        {{#if calendarItem.navPSAppView}}
        // 导航视图
        navView: "{{calendarItem.navPSAppView.codeName}}",
        {{/if}}
        // 导航上下文
        navigateContext: {{> @macro/common/navparam.hbs appNavParams=treeNodeRS.psNavigateContexts}},
        // 导航参数       
        navigateParams: {{> @macro/common/navparam.hbs appNavParams=treeNodeRS.psNavigateParams}},        
        // 导航过滤项   
        navFilter: '{{calendarItem.navFilter}}',
        // 导航关系
        navPSDER: {{#if calendarItem.navPSDER}}{
          minorCodeName: '{{calendarItem.navPSDER.minorCodeName}}',
        }{{else}}{}{{/if}},
        // 样式表
        cssName: '{{#if calendarItem.psSysCss}}{{calendarItem.psSysCss.cssName}}{{/if}}',  
        {{#if calendarItem.psLayoutPanel}}
        // 项布局面板
        psLayoutPanel:{
          name: '{{calendarItem.psLayoutPanel.name}}',
          codeName: '{{calendarItem.psLayoutPanel.codeName}}',
        },
        {{/if}}
      }{{#unless @last}},{{/unless}}
  {{/each}}
]
{{/inline}}

import { ICalendarModel, ICalendarItemModel } from "@/core";

//  获取日历模型
function getModel(): ICalendarModel {
  return {
    cssName: "{{#if ctrl.psSysCss}}{{ctrl.psSysCss.cssName}}{{/if}}",         
    caption: '{{ctrl.caption}}',
    controlType: '{{ctrl.controlType}}',
    codeName: '{{ctrl.codeName}}',
    entityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
    entityLogicName: '{{ctrl.psAppDataEntity.logicName}}',
    name: '{{ctrl.name}}',
    limit: {{#if ctrl.pagingSize}}{{ctrl.pagingSize}}{{else}}1000{{/if}},
    // 日历项集合
    calendarItems: {{#if ctrl.psSysCalendarItems}}getCalendarItems(){{else}}[]{{/if}},
    // 日历样式
    calendarStyle: '{{ctrl.calendarStyle}}',
    // 部件参数
    ctrlParams: {{CustomParams 'ctrl' ctrl.ctrlParams}},    
  };
}

function getCalendarItems(): ICalendarItemModel[] {
    return {{> initCalendarItems calendarItems=ctrl.psSysCalendarItems}}
}

export const model = getModel();